package thinkingInJava;
/**
 * 
 * @author jieji
 *
 */
/**
 * String 传递时复制引用然后再传递
 * String对象是只读的
 * String对象直接相加会变成StringBuilder的append方法(编译器自动优化),但如果使用了循环那么就不可以自动优化了,这时最好使用StringBuilder
 * StringBuffer这个是线程安全的
 *
 */
public class Learn13 {
	public static void main(String[] args) {
		t1();
		DataException.t1();
	}
	public static void t1(){
		/**
		 * java15提供的String方法,用来格式化String
		 * d整数(十进制)
		 * c unicode字符
		 * b boolean
		 * s string
		 * f 浮点数
		 * e 浮点数 科学技术
		 * x整数十六进制
		 * h 散列
		 * %字符%
		 * 
		 */
		System.out.println(String.format("%d%s", 1,"g"));
	}
	public static void t2(){
		String s="nono";
		System.out.format("Number:[%d]", 1);
	}
}
class DataException extends RuntimeException{

	/**
	 * 异常处理类
	 */
	private static final long serialVersionUID = 1L;

	public DataException(String formatString,Object...args) {
		super(String.format(formatString,args));
	}
	public static void t1(){
		try {
			String[] s={"1","2","3"};
			throw new DataException("msg:%s number:%s",s);
		} catch (Exception e) {
			System.out.println(e.getMessage());
			System.out.println(e.getLocalizedMessage());
		}
	}
	
}
